package com.ssm.service.impl;

import cn.hutool.core.util.StrUtil;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.ssm.entity.tb;
import com.ssm.entity.tbExample;
import com.ssm.mapper.tbMapper;
import com.ssm.service.tbService;
import com.ssm.util.PageResult;
import com.ssm.vo.tbVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;

@Service
public class tbServiceImpl implements tbService {
	@Autowired
	private tbMapper tbMapper;

	@Override
	public List<tb> findAll() {
		List<tb> tbs = tbMapper.selectByExample(null);
		return tbs;
	}
	// 分页查询
	@Override
	public PageResult<tb> findByPage(Integer page, Integer pageSize) {
		//1. 开始分页
		PageHelper.startPage(page,pageSize);
		// 2. 开始查询数据
		List<tb> tbs = this.findAll();
		// 3. 将查询得到的数据转换为Page<Student>对象
		Page<tb> tbPage = (Page<tb>) tbs;
		// 4. 转换为PageResult对象
		return new PageResult<>(tbPage.getResult(), tbPage.getTotal());

	}
	// 条件查询带分页功能
	@Override
	public PageResult<tb> search(Integer page, Integer pageSize, tbVO tbVo) {
		// 1. 开始分页
		PageHelper.startPage(page, pageSize);
		// 2. 查询数据
		// 2.1 定义一次查询的实例
		tbExample example = new tbExample();
		// 2.2 添加查询条件到查询实例中
		tbExample.Criteria criteria = example.createCriteria();
		if(StrUtil.isNotBlank(tbVo.getSname())){
			criteria.andSnameLike("%" + tbVo.getSname() + "%");
		}
		if(StrUtil.isNotBlank(tbVo.getAddr())){
			criteria.andAddrLike("%" + tbVo.getAddr() + "%"); // addr like '%' + addr + '%'
		}
		if(tbVo.getCid() != null && tbVo.getCid() != 0){
			criteria.andCidEqualTo(tbVo.getCid());
		}
		List<tb> tbs = tbMapper.selectByExample(example);
		// 2.3 将上面的students对象转换为List集合
		Page<tb> tbPage = (Page<tb>) tbs;
		return new PageResult<>(tbPage.getResult(), tbPage.getTotal());

	}

	// 3. 添加学生
	@Override
	public boolean save(tb tb) {
		if(tbMapper.insert(tb)>0)
		return true;
		return false;
	}
}
